/**
 * 
 */
package com.czmh.etc.onlinepubsys.services;

import com.czmh.etc.onlinepubsys.dto.EtcIdcardDto;
import com.czmh.etc.onlinepubsys.dto.EtcInterpreterMessageDto;
import com.czmh.etc.onlinepubsys.dto.EtcVehiclelicenseDto;
import com.czmh.etc.onlinepubsys.exceptions.EtcInterpreterException;
import com.czmh.etc.onlinepubsys.model.EtcApply;
import com.czmh.etc.onlinepubsys.request.ObuactivationRequest;
import com.czmh.etc.onlinepubsys.request.ObuconfirmRequest;
import com.czmh.etc.onlinepubsys.response.ObuactivationResponse;

/**
 * @描述：易构转换程序服务
 * @author： Seven.
 * @创建日期：Jun 11, 2019 8:15:22 PM.
 * @版本：1.0.0
 */
public interface EtcInterpreterService {
    /**
     * 调用青海注册用户及车辆信息接口，注册青通卡用户及车辆信息
     * 调用编码：9133-9134
     *
     * @param etcApply             申请信息
     * @param idcardDto            用户身份证信息
     * @param vehiclelicenseDto    用户车辆信息
     */
    EtcInterpreterMessageDto registerEtcUserInfoRequest(EtcApply etcApply, EtcIdcardDto idcardDto, EtcVehiclelicenseDto vehiclelicenseDto) throws Exception;

    /**
     * 注册用户信息：9133
     *
     * @param etcApply          申办信息
     * @param idcardDto         用户信息
     * @return
     * @throws Exception
     */
    EtcInterpreterMessageDto registerUserInfo(EtcApply etcApply, EtcIdcardDto idcardDto) throws Exception;

    /**
     * 注册车辆信息：9134
     *
     * @param etcApply             申请信息
     * @param idcardDto            用户身份证信息
     * @param vehiclelicenseDto    车辆信息
     * @return
     * @throws Exception
     */
    EtcInterpreterMessageDto registerCarInfo(EtcApply etcApply, EtcIdcardDto idcardDto, EtcVehiclelicenseDto vehiclelicenseDto) throws Exception;

    /**
     * 调用青海联网中心相关接口激活OBU设备
     * OBU激活：9139
     *
     * @param request 获取OBU设备信息
     * @return
     */
    ObuactivationResponse obuactivation(ObuactivationRequest request) throws EtcInterpreterException, Exception;

    /**
     * 卡二发：9102
     *
     *
     * @param user_id           用户id
     * @param apply_id          申请id
     * @param obu_id            OBUID
     * @param carId             卡号
     * @param cardType          卡类型（16进制）
     * @param vardVersion       卡类型
     * @param userType          用户类型（16进制）
     * @param ramdom            随机数
     * @param fileType          写文件类型，传1或者2，（1:0015文件；2：0016文件，先传2再传1）
     * @return
     * @throws Exception
     */
    EtcInterpreterMessageDto cardSecSend(String user_id, String apply_id, String obu_id, String carId, String cardType, String vardVersion, String userType, String ramdom, String fileType) throws Exception;

    /**
     * OBU二发：9104-9139
     * 先调用9104向高管局注册发行OBU，再调用9139发行OBU
     * 改接口需要调用两次，第一次调用需要传入写入文件类型fileType为1:系统信息文件，这时返回系统信息写入指令
     * 第二次调用时需要传入文件类型fileType为2:系统信息文件，这时返回应用信息写入指令
     *
     * @param user_id          用户id
     * @param apply_id         申请id
     * @param obuId            合同序列号（obu卡号）
     * @param userType         用户类型
     * @param fileType         文件类型：1:系统信息文件，2:系统信息文件
     * @param ramdom           随机数
     * @return
     */
    EtcInterpreterMessageDto obuSecSend(String user_id, String apply_id, String obuId, String userType, String fileType, String ramdom) throws EtcInterpreterException, Exception;

    /**
     * OBU发行结果确认
     *
     * @param user_id          用户ID
     * @param request          确认参数数
     */
    void obuconfirm(String user_id, ObuconfirmRequest request) throws EtcInterpreterException, Exception;

    /**
     * 注册用户和车辆信息：9133-9134
     *
     * @param user_id         用户id
     * @param apply_id        申请id
     */
    EtcInterpreterMessageDto registerinfo(String user_id, String apply_id) throws EtcInterpreterException, Exception;

}